/**
 * <copyright>
 * </copyright>
 *
 * $Id$
 */
package org.anachronos.jeep.model.trace.impl;

import org.anachronos.jeep.model.trace.CallStacksType;
import org.anachronos.jeep.model.trace.DocumentRoot;
import org.anachronos.jeep.model.trace.Invocation;
import org.anachronos.jeep.model.trace.MergedMethodInvocationsType;
import org.anachronos.jeep.model.trace.MergedSqlStatementExecutionsType;
import org.anachronos.jeep.model.trace.Method;
import org.anachronos.jeep.model.trace.MethodInvocation;
import org.anachronos.jeep.model.trace.MethodsType;
import org.anachronos.jeep.model.trace.Metrics;
import org.anachronos.jeep.model.trace.NamedElement;
import org.anachronos.jeep.model.trace.SqlStatementExecution;
import org.anachronos.jeep.model.trace.ThreadCallStack;
import org.anachronos.jeep.model.trace.Trace;
import org.anachronos.jeep.model.trace.TraceFactory;
import org.anachronos.jeep.model.trace.TracePackage;
import org.anachronos.jeep.model.trace.Transaction;
import org.anachronos.jeep.model.trace.TransactionStatus;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EDataType;
import org.eclipse.emf.ecore.EEnum;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.impl.EPackageImpl;
import org.eclipse.emf.ecore.xml.type.XMLTypePackage;

/**
 * <!-- begin-user-doc -->
 * An implementation of the model <b>Package</b>.
 * <!-- end-user-doc -->
 * @generated
 */
public class TracePackageImpl extends EPackageImpl implements TracePackage {
	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass callStacksTypeEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass classEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass documentRootEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass invocationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass mergedMethodInvocationsTypeEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass mergedSqlStatementExecutionsTypeEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass methodEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass methodInvocationEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass methodsTypeEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass metricsEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass namedElementEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass packageEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass sqlStatementExecutionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass threadCallStackEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass traceEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EClass transactionEClass = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EEnum transactionStatusEEnum = null;

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private EDataType transactionStatusObjectEDataType = null;

	/**
	 * Creates an instance of the model <b>Package</b>, registered with
	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
	 * package URI value.
	 * <p>Note: the correct way to create the package is via the static
	 * factory method {@link #init init()}, which also performs
	 * initialization of the package, or returns the registered package,
	 * if one already exists.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see org.eclipse.emf.ecore.EPackage.Registry
	 * @see org.anachronos.jeep.model.trace.TracePackage#eNS_URI
	 * @see #init()
	 * @generated
	 */
	private TracePackageImpl() {
		super(eNS_URI, TraceFactory.eINSTANCE);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private static boolean isInited = false;

	/**
	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
	 * 
	 * <p>This method is used to initialize {@link TracePackage#eINSTANCE} when that field is accessed.
	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @see #eNS_URI
	 * @see #createPackageContents()
	 * @see #initializePackageContents()
	 * @generated
	 */
	public static TracePackage init() {
		if (isInited) return (TracePackage)EPackage.Registry.INSTANCE.getEPackage(TracePackage.eNS_URI);

		// Obtain or create and register package
		TracePackageImpl theTracePackage = (TracePackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof TracePackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new TracePackageImpl());

		isInited = true;

		// Initialize simple dependencies
		XMLTypePackage.eINSTANCE.eClass();

		// Create package meta-data objects
		theTracePackage.createPackageContents();

		// Initialize created meta-data
		theTracePackage.initializePackageContents();

		// Mark meta-data to indicate it can't be changed
		theTracePackage.freeze();

  
		// Update the registry and return the package
		EPackage.Registry.INSTANCE.put(TracePackage.eNS_URI, theTracePackage);
		return theTracePackage;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getCallStacksType() {
		return callStacksTypeEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getCallStacksType_CallStack() {
		return (EReference)callStacksTypeEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getClass_() {
		return classEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getClass_Methods() {
		return (EReference)classEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getDocumentRoot() {
		return documentRootEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getDocumentRoot_Mixed() {
		return (EAttribute)documentRootEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getDocumentRoot_XMLNSPrefixMap() {
		return (EReference)documentRootEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getDocumentRoot_XSISchemaLocation() {
		return (EReference)documentRootEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getDocumentRoot_MethodInvocation() {
		return (EReference)documentRootEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getDocumentRoot_SqlStatementExecution() {
		return (EReference)documentRootEClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getDocumentRoot_ThreadCallStack() {
		return (EReference)documentRootEClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getDocumentRoot_Trace() {
		return (EReference)documentRootEClass.getEStructuralFeatures().get(6);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getInvocation() {
		return invocationEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getInvocation_Metrics() {
		return (EReference)invocationEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getInvocation_Group() {
		return (EAttribute)invocationEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getInvocation_MethodInvocation() {
		return (EReference)invocationEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getInvocation_SqlStatementExecution() {
		return (EReference)invocationEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getInvocation_Transaction() {
		return (EReference)invocationEClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getMergedMethodInvocationsType() {
		return mergedMethodInvocationsTypeEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getMergedMethodInvocationsType_MergedMethodInvocations() {
		return (EReference)mergedMethodInvocationsTypeEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getMergedSqlStatementExecutionsType() {
		return mergedSqlStatementExecutionsTypeEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getMergedSqlStatementExecutionsType_MergedSqlStatementExecutions() {
		return (EReference)mergedSqlStatementExecutionsTypeEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getMethod() {
		return methodEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getMethod_ArgumentTypes() {
		return (EReference)methodEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getMethod_ReturnType() {
		return (EReference)methodEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getMethodInvocation() {
		return methodInvocationEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getMethodInvocation_SelfMetrics() {
		return (EReference)methodInvocationEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getMethodInvocation_Method() {
		return (EReference)methodInvocationEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getMethodsType() {
		return methodsTypeEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getMethodsType_Method() {
		return (EAttribute)methodsTypeEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getMetrics() {
		return metricsEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getMetrics_Calls() {
		return (EAttribute)metricsEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getMetrics_MaxTimeNs() {
		return (EAttribute)metricsEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getMetrics_MinTimeNs() {
		return (EAttribute)metricsEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getMetrics_TotalTimeNs() {
		return (EAttribute)metricsEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getNamedElement() {
		return namedElementEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getNamedElement_Id() {
		return (EAttribute)namedElementEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getNamedElement_Name() {
		return (EAttribute)namedElementEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getPackage() {
		return packageEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getPackage_Group() {
		return (EAttribute)packageEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getPackage_Class() {
		return (EReference)packageEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getPackage_Package() {
		return (EReference)packageEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getSqlStatementExecution() {
		return sqlStatementExecutionEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getSqlStatementExecution_ClassName() {
		return (EAttribute)sqlStatementExecutionEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getSqlStatementExecution_Statement() {
		return (EAttribute)sqlStatementExecutionEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getThreadCallStack() {
		return threadCallStackEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getThreadCallStack_Id() {
		return (EAttribute)threadCallStackEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getThreadCallStack_Name() {
		return (EAttribute)threadCallStackEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getTrace() {
		return traceEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTrace_Methods() {
		return (EReference)traceEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTrace_CallStacks() {
		return (EReference)traceEClass.getEStructuralFeatures().get(1);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTrace_MergedMethodInvocations() {
		return (EReference)traceEClass.getEStructuralFeatures().get(2);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTrace_MergedSqlStatementExecutions() {
		return (EReference)traceEClass.getEStructuralFeatures().get(3);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTrace_MergedCallStack() {
		return (EReference)traceEClass.getEStructuralFeatures().get(4);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EReference getTrace_RootPackage() {
		return (EReference)traceEClass.getEStructuralFeatures().get(5);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EClass getTransaction() {
		return transactionEClass;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EAttribute getTransaction_Status() {
		return (EAttribute)transactionEClass.getEStructuralFeatures().get(0);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EEnum getTransactionStatus() {
		return transactionStatusEEnum;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public EDataType getTransactionStatusObject() {
		return transactionStatusObjectEDataType;
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public TraceFactory getTraceFactory() {
		return (TraceFactory)getEFactoryInstance();
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isCreated = false;

	/**
	 * Creates the meta-model objects for the package.  This method is
	 * guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void createPackageContents() {
		if (isCreated) return;
		isCreated = true;

		// Create classes and their features
		callStacksTypeEClass = createEClass(CALL_STACKS_TYPE);
		createEReference(callStacksTypeEClass, CALL_STACKS_TYPE__CALL_STACK);

		classEClass = createEClass(CLASS);
		createEReference(classEClass, CLASS__METHODS);

		documentRootEClass = createEClass(DOCUMENT_ROOT);
		createEAttribute(documentRootEClass, DOCUMENT_ROOT__MIXED);
		createEReference(documentRootEClass, DOCUMENT_ROOT__XMLNS_PREFIX_MAP);
		createEReference(documentRootEClass, DOCUMENT_ROOT__XSI_SCHEMA_LOCATION);
		createEReference(documentRootEClass, DOCUMENT_ROOT__METHOD_INVOCATION);
		createEReference(documentRootEClass, DOCUMENT_ROOT__SQL_STATEMENT_EXECUTION);
		createEReference(documentRootEClass, DOCUMENT_ROOT__THREAD_CALL_STACK);
		createEReference(documentRootEClass, DOCUMENT_ROOT__TRACE);

		invocationEClass = createEClass(INVOCATION);
		createEReference(invocationEClass, INVOCATION__METRICS);
		createEAttribute(invocationEClass, INVOCATION__GROUP);
		createEReference(invocationEClass, INVOCATION__METHOD_INVOCATION);
		createEReference(invocationEClass, INVOCATION__SQL_STATEMENT_EXECUTION);
		createEReference(invocationEClass, INVOCATION__TRANSACTION);

		mergedMethodInvocationsTypeEClass = createEClass(MERGED_METHOD_INVOCATIONS_TYPE);
		createEReference(mergedMethodInvocationsTypeEClass, MERGED_METHOD_INVOCATIONS_TYPE__MERGED_METHOD_INVOCATIONS);

		mergedSqlStatementExecutionsTypeEClass = createEClass(MERGED_SQL_STATEMENT_EXECUTIONS_TYPE);
		createEReference(mergedSqlStatementExecutionsTypeEClass, MERGED_SQL_STATEMENT_EXECUTIONS_TYPE__MERGED_SQL_STATEMENT_EXECUTIONS);

		methodEClass = createEClass(METHOD);
		createEReference(methodEClass, METHOD__ARGUMENT_TYPES);
		createEReference(methodEClass, METHOD__RETURN_TYPE);

		methodInvocationEClass = createEClass(METHOD_INVOCATION);
		createEReference(methodInvocationEClass, METHOD_INVOCATION__SELF_METRICS);
		createEReference(methodInvocationEClass, METHOD_INVOCATION__METHOD);

		methodsTypeEClass = createEClass(METHODS_TYPE);
		createEAttribute(methodsTypeEClass, METHODS_TYPE__METHOD);

		metricsEClass = createEClass(METRICS);
		createEAttribute(metricsEClass, METRICS__CALLS);
		createEAttribute(metricsEClass, METRICS__MAX_TIME_NS);
		createEAttribute(metricsEClass, METRICS__MIN_TIME_NS);
		createEAttribute(metricsEClass, METRICS__TOTAL_TIME_NS);

		namedElementEClass = createEClass(NAMED_ELEMENT);
		createEAttribute(namedElementEClass, NAMED_ELEMENT__ID);
		createEAttribute(namedElementEClass, NAMED_ELEMENT__NAME);

		packageEClass = createEClass(PACKAGE);
		createEAttribute(packageEClass, PACKAGE__GROUP);
		createEReference(packageEClass, PACKAGE__CLASS);
		createEReference(packageEClass, PACKAGE__PACKAGE);

		sqlStatementExecutionEClass = createEClass(SQL_STATEMENT_EXECUTION);
		createEAttribute(sqlStatementExecutionEClass, SQL_STATEMENT_EXECUTION__CLASS_NAME);
		createEAttribute(sqlStatementExecutionEClass, SQL_STATEMENT_EXECUTION__STATEMENT);

		threadCallStackEClass = createEClass(THREAD_CALL_STACK);
		createEAttribute(threadCallStackEClass, THREAD_CALL_STACK__ID);
		createEAttribute(threadCallStackEClass, THREAD_CALL_STACK__NAME);

		traceEClass = createEClass(TRACE);
		createEReference(traceEClass, TRACE__METHODS);
		createEReference(traceEClass, TRACE__CALL_STACKS);
		createEReference(traceEClass, TRACE__MERGED_METHOD_INVOCATIONS);
		createEReference(traceEClass, TRACE__MERGED_SQL_STATEMENT_EXECUTIONS);
		createEReference(traceEClass, TRACE__MERGED_CALL_STACK);
		createEReference(traceEClass, TRACE__ROOT_PACKAGE);

		transactionEClass = createEClass(TRANSACTION);
		createEAttribute(transactionEClass, TRANSACTION__STATUS);

		// Create enums
		transactionStatusEEnum = createEEnum(TRANSACTION_STATUS);

		// Create data types
		transactionStatusObjectEDataType = createEDataType(TRANSACTION_STATUS_OBJECT);
	}

	/**
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	private boolean isInitialized = false;

	/**
	 * Complete the initialization of the package and its meta-model.  This
	 * method is guarded to have no affect on any invocation but its first.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	public void initializePackageContents() {
		if (isInitialized) return;
		isInitialized = true;

		// Initialize package
		setName(eNAME);
		setNsPrefix(eNS_PREFIX);
		setNsURI(eNS_URI);

		// Obtain other dependent packages
		XMLTypePackage theXMLTypePackage = (XMLTypePackage)EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI);

		// Create type parameters

		// Set bounds for type parameters

		// Add supertypes to classes
		classEClass.getESuperTypes().add(this.getNamedElement());
		methodEClass.getESuperTypes().add(this.getNamedElement());
		methodInvocationEClass.getESuperTypes().add(this.getInvocation());
		packageEClass.getESuperTypes().add(this.getNamedElement());
		sqlStatementExecutionEClass.getESuperTypes().add(this.getInvocation());
		threadCallStackEClass.getESuperTypes().add(this.getInvocation());
		transactionEClass.getESuperTypes().add(this.getInvocation());

		// Initialize classes and features; add operations and parameters
		initEClass(callStacksTypeEClass, CallStacksType.class, "CallStacksType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getCallStacksType_CallStack(), this.getThreadCallStack(), null, "callStack", null, 0, -1, CallStacksType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(classEClass, org.anachronos.jeep.model.trace.Class.class, "Class", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getClass_Methods(), this.getMethod(), null, "methods", null, 0, -1, org.anachronos.jeep.model.trace.Class.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(documentRootEClass, DocumentRoot.class, "DocumentRoot", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getDocumentRoot_Mixed(), ecorePackage.getEFeatureMapEntry(), "mixed", null, 0, -1, null, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getDocumentRoot_XMLNSPrefixMap(), ecorePackage.getEStringToStringMapEntry(), null, "xMLNSPrefixMap", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getDocumentRoot_XSISchemaLocation(), ecorePackage.getEStringToStringMapEntry(), null, "xSISchemaLocation", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getDocumentRoot_MethodInvocation(), this.getMethodInvocation(), null, "methodInvocation", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
		initEReference(getDocumentRoot_SqlStatementExecution(), this.getSqlStatementExecution(), null, "sqlStatementExecution", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
		initEReference(getDocumentRoot_ThreadCallStack(), this.getThreadCallStack(), null, "threadCallStack", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
		initEReference(getDocumentRoot_Trace(), this.getTrace(), null, "trace", null, 0, -2, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);

		initEClass(invocationEClass, Invocation.class, "Invocation", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getInvocation_Metrics(), this.getMetrics(), null, "metrics", null, 0, 1, Invocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getInvocation_Group(), ecorePackage.getEFeatureMapEntry(), "group", null, 0, -1, Invocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getInvocation_MethodInvocation(), this.getMethodInvocation(), null, "methodInvocation", null, 0, -1, Invocation.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
		initEReference(getInvocation_SqlStatementExecution(), this.getSqlStatementExecution(), null, "sqlStatementExecution", null, 0, -1, Invocation.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
		initEReference(getInvocation_Transaction(), this.getTransaction(), null, "transaction", null, 0, -1, Invocation.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);

		initEClass(mergedMethodInvocationsTypeEClass, MergedMethodInvocationsType.class, "MergedMethodInvocationsType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getMergedMethodInvocationsType_MergedMethodInvocations(), this.getMethodInvocation(), null, "mergedMethodInvocations", null, 0, -1, MergedMethodInvocationsType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(mergedSqlStatementExecutionsTypeEClass, MergedSqlStatementExecutionsType.class, "MergedSqlStatementExecutionsType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getMergedSqlStatementExecutionsType_MergedSqlStatementExecutions(), this.getSqlStatementExecution(), null, "mergedSqlStatementExecutions", null, 0, -1, MergedSqlStatementExecutionsType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(methodEClass, Method.class, "Method", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getMethod_ArgumentTypes(), this.getClass_(), null, "argumentTypes", null, 0, -1, Method.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getMethod_ReturnType(), this.getClass_(), null, "returnType", null, 0, 1, Method.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(methodInvocationEClass, MethodInvocation.class, "MethodInvocation", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getMethodInvocation_SelfMetrics(), this.getMetrics(), null, "selfMetrics", null, 0, 1, MethodInvocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getMethodInvocation_Method(), this.getMethod(), null, "method", null, 0, 1, MethodInvocation.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(methodsTypeEClass, MethodsType.class, "MethodsType", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getMethodsType_Method(), theXMLTypePackage.getIDREF(), "method", null, 0, -1, MethodsType.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(metricsEClass, Metrics.class, "Metrics", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getMetrics_Calls(), theXMLTypePackage.getInt(), "calls", null, 1, 1, Metrics.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getMetrics_MaxTimeNs(), theXMLTypePackage.getLong(), "maxTimeNs", null, 1, 1, Metrics.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getMetrics_MinTimeNs(), theXMLTypePackage.getLong(), "minTimeNs", null, 1, 1, Metrics.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getMetrics_TotalTimeNs(), theXMLTypePackage.getLong(), "totalTimeNs", null, 1, 1, Metrics.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(namedElementEClass, NamedElement.class, "NamedElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getNamedElement_Id(), theXMLTypePackage.getID(), "id", null, 1, 1, NamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getNamedElement_Name(), theXMLTypePackage.getString(), "name", null, 1, 1, NamedElement.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(packageEClass, org.anachronos.jeep.model.trace.Package.class, "Package", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getPackage_Group(), ecorePackage.getEFeatureMapEntry(), "group", null, 0, -1, org.anachronos.jeep.model.trace.Package.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getPackage_Class(), this.getClass_(), null, "class", null, 0, -1, org.anachronos.jeep.model.trace.Package.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
		initEReference(getPackage_Package(), this.getPackage(), null, "package", null, 0, -1, org.anachronos.jeep.model.trace.Package.class, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);

		initEClass(sqlStatementExecutionEClass, SqlStatementExecution.class, "SqlStatementExecution", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getSqlStatementExecution_ClassName(), theXMLTypePackage.getString(), "className", null, 1, 1, SqlStatementExecution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getSqlStatementExecution_Statement(), theXMLTypePackage.getString(), "statement", null, 1, 1, SqlStatementExecution.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(threadCallStackEClass, ThreadCallStack.class, "ThreadCallStack", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getThreadCallStack_Id(), theXMLTypePackage.getLong(), "id", null, 1, 1, ThreadCallStack.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEAttribute(getThreadCallStack_Name(), theXMLTypePackage.getString(), "name", null, 0, 1, ThreadCallStack.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(traceEClass, Trace.class, "Trace", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEReference(getTrace_Methods(), this.getMethodsType(), null, "methods", null, 0, 1, Trace.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTrace_CallStacks(), this.getCallStacksType(), null, "callStacks", null, 0, 1, Trace.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTrace_MergedMethodInvocations(), this.getMergedMethodInvocationsType(), null, "mergedMethodInvocations", null, 0, 1, Trace.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTrace_MergedSqlStatementExecutions(), this.getMergedSqlStatementExecutionsType(), null, "mergedSqlStatementExecutions", null, 0, 1, Trace.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTrace_MergedCallStack(), this.getThreadCallStack(), null, "mergedCallStack", null, 0, 1, Trace.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
		initEReference(getTrace_RootPackage(), this.getPackage(), null, "rootPackage", null, 0, 1, Trace.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		initEClass(transactionEClass, Transaction.class, "Transaction", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
		initEAttribute(getTransaction_Status(), this.getTransactionStatus(), "status", null, 0, 1, Transaction.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);

		// Initialize enums and add enum literals
		initEEnum(transactionStatusEEnum, TransactionStatus.class, "TransactionStatus");
		addEEnumLiteral(transactionStatusEEnum, TransactionStatus.ROLLINGBACK);
		addEEnumLiteral(transactionStatusEEnum, TransactionStatus.COMMITING);
		addEEnumLiteral(transactionStatusEEnum, TransactionStatus.PREPARING);
		addEEnumLiteral(transactionStatusEEnum, TransactionStatus.NOTRANSACTION);
		addEEnumLiteral(transactionStatusEEnum, TransactionStatus.UNKNOWN);
		addEEnumLiteral(transactionStatusEEnum, TransactionStatus.ROLLEDBACK);
		addEEnumLiteral(transactionStatusEEnum, TransactionStatus.COMMITED);
		addEEnumLiteral(transactionStatusEEnum, TransactionStatus.PREPARED);
		addEEnumLiteral(transactionStatusEEnum, TransactionStatus.MARKEDROLLBACK);
		addEEnumLiteral(transactionStatusEEnum, TransactionStatus.ACTIVE);

		// Initialize data types
		initEDataType(transactionStatusObjectEDataType, TransactionStatus.class, "TransactionStatusObject", IS_SERIALIZABLE, IS_GENERATED_INSTANCE_CLASS);

		// Create resource
		createResource(eNS_URI);

		// Create annotations
		// http:///org/eclipse/emf/ecore/util/ExtendedMetaData
		createExtendedMetaDataAnnotations();
	}

	/**
	 * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @generated
	 */
	protected void createExtendedMetaDataAnnotations() {
		String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";		
		addAnnotation
		  (callStacksTypeEClass, 
		   source, 
		   new String[] {
			 "name", "callStacks_._type",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getCallStacksType_CallStack(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "callStack",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (classEClass, 
		   source, 
		   new String[] {
			 "name", "class",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getClass_Methods(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "methods",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (documentRootEClass, 
		   source, 
		   new String[] {
			 "name", "",
			 "kind", "mixed"
		   });		
		addAnnotation
		  (getDocumentRoot_Mixed(), 
		   source, 
		   new String[] {
			 "kind", "elementWildcard",
			 "name", ":mixed"
		   });		
		addAnnotation
		  (getDocumentRoot_XMLNSPrefixMap(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "xmlns:prefix"
		   });		
		addAnnotation
		  (getDocumentRoot_XSISchemaLocation(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "xsi:schemaLocation"
		   });		
		addAnnotation
		  (getDocumentRoot_MethodInvocation(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "methodInvocation",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (getDocumentRoot_SqlStatementExecution(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "sqlStatementExecution",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (getDocumentRoot_ThreadCallStack(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "threadCallStack",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (getDocumentRoot_Trace(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "trace",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (invocationEClass, 
		   source, 
		   new String[] {
			 "name", "invocation",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getInvocation_Metrics(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "metrics",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (getInvocation_Group(), 
		   source, 
		   new String[] {
			 "kind", "group",
			 "name", "group:1"
		   });		
		addAnnotation
		  (getInvocation_MethodInvocation(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "methodInvocation",
			 "namespace", "##targetNamespace",
			 "group", "#group:1"
		   });		
		addAnnotation
		  (getInvocation_SqlStatementExecution(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "sqlStatementExecution",
			 "namespace", "##targetNamespace",
			 "group", "#group:1"
		   });		
		addAnnotation
		  (getInvocation_Transaction(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "transaction",
			 "namespace", "##targetNamespace",
			 "group", "#group:1"
		   });		
		addAnnotation
		  (mergedMethodInvocationsTypeEClass, 
		   source, 
		   new String[] {
			 "name", "mergedMethodInvocations_._type",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getMergedMethodInvocationsType_MergedMethodInvocations(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "mergedMethodInvocations",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (mergedSqlStatementExecutionsTypeEClass, 
		   source, 
		   new String[] {
			 "name", "mergedSqlStatementExecutions_._type",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getMergedSqlStatementExecutionsType_MergedSqlStatementExecutions(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "mergedSqlStatementExecutions",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (methodEClass, 
		   source, 
		   new String[] {
			 "name", "method",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getMethod_ArgumentTypes(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "argumentTypes",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (getMethod_ReturnType(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "returnType"
		   });		
		addAnnotation
		  (methodInvocationEClass, 
		   source, 
		   new String[] {
			 "name", "methodInvocation",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getMethodInvocation_SelfMetrics(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "selfMetrics",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (getMethodInvocation_Method(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "method"
		   });		
		addAnnotation
		  (methodsTypeEClass, 
		   source, 
		   new String[] {
			 "name", "methods_._type",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getMethodsType_Method(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "method",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (metricsEClass, 
		   source, 
		   new String[] {
			 "name", "metrics",
			 "kind", "empty"
		   });		
		addAnnotation
		  (getMetrics_Calls(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "calls"
		   });		
		addAnnotation
		  (getMetrics_MaxTimeNs(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "maxTimeNs"
		   });		
		addAnnotation
		  (getMetrics_MinTimeNs(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "minTimeNs"
		   });		
		addAnnotation
		  (getMetrics_TotalTimeNs(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "totalTimeNs"
		   });		
		addAnnotation
		  (namedElementEClass, 
		   source, 
		   new String[] {
			 "name", "namedElement",
			 "kind", "empty"
		   });		
		addAnnotation
		  (getNamedElement_Id(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "id"
		   });		
		addAnnotation
		  (getNamedElement_Name(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "name"
		   });		
		addAnnotation
		  (packageEClass, 
		   source, 
		   new String[] {
			 "name", "package",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getPackage_Group(), 
		   source, 
		   new String[] {
			 "kind", "group",
			 "name", "group:2"
		   });		
		addAnnotation
		  (getPackage_Class(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "class",
			 "namespace", "##targetNamespace",
			 "group", "#group:2"
		   });		
		addAnnotation
		  (getPackage_Package(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "package",
			 "namespace", "##targetNamespace",
			 "group", "#group:2"
		   });		
		addAnnotation
		  (sqlStatementExecutionEClass, 
		   source, 
		   new String[] {
			 "name", "sqlStatementExecution",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getSqlStatementExecution_ClassName(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "className"
		   });		
		addAnnotation
		  (getSqlStatementExecution_Statement(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "statement"
		   });		
		addAnnotation
		  (threadCallStackEClass, 
		   source, 
		   new String[] {
			 "name", "threadCallStack",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getThreadCallStack_Id(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "id"
		   });		
		addAnnotation
		  (getThreadCallStack_Name(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "name"
		   });		
		addAnnotation
		  (traceEClass, 
		   source, 
		   new String[] {
			 "name", "trace",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getTrace_Methods(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "methods",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (getTrace_CallStacks(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "callStacks",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (getTrace_MergedMethodInvocations(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "mergedMethodInvocations",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (getTrace_MergedSqlStatementExecutions(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "mergedSqlStatementExecutions",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (getTrace_MergedCallStack(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "mergedCallStack",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (getTrace_RootPackage(), 
		   source, 
		   new String[] {
			 "kind", "element",
			 "name", "rootPackage",
			 "namespace", "##targetNamespace"
		   });		
		addAnnotation
		  (transactionEClass, 
		   source, 
		   new String[] {
			 "name", "transaction",
			 "kind", "elementOnly"
		   });		
		addAnnotation
		  (getTransaction_Status(), 
		   source, 
		   new String[] {
			 "kind", "attribute",
			 "name", "status"
		   });		
		addAnnotation
		  (transactionStatusEEnum, 
		   source, 
		   new String[] {
			 "name", "transactionStatus"
		   });		
		addAnnotation
		  (transactionStatusObjectEDataType, 
		   source, 
		   new String[] {
			 "name", "transactionStatus:Object",
			 "baseType", "transactionStatus"
		   });
	}

} //TracePackageImpl
